package com.zcx.common.util;

import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

/**
 * @author zhaochangxin
 * @Title: ListCompareByDateUtil
 * @Package com.zcx.common.util
 * @Description: 通过集合中的Date来对集合排序
 * @date 2022/4/1 14:31
 *
 */
public class ListCompareByDateUtil {
    /**
    　* @author zhaochangxin
    　* @Description:通过集合中的Date来对集合排序
     * @Param targetList: 目标排序List
     * @Param sortType: 排序方式（asc or  desc）
     * @Param DateName 需要排序的属性字段
    　* @return: void
    　* @date 2022/4/1 14:33
    　* @throws
    　*/
    public static <T> void DateSort(List<T> targetList, String DateName, final String sortType) {
        String str=Character.toUpperCase(DateName.charAt(0))+DateName.substring(1);
        Collections.sort(targetList, new Comparator<T>() {
            @Override
            public int compare(T o1, T o2) {
                try {
                    Method method1 = o1.getClass().getMethod("get"+str);
                    Method method2 = o2.getClass().getMethod("get"+str);
                    Date date1 = (Date) method1.invoke(o1);
                    Date date2 = (Date) method2.invoke(o2);
                    if(sortType.equals("desc"))
                    {
                        if(date1.before(date2)) return 1;
                        else return -1;
                    }
                    else
                    {
                        if(date1.after(date2)) return 1;
                        else return -1;
                    }

                } catch (Exception e) {
                    return 0;
                }
            }
        });
    }
}
